events: Use GdkDrop as event sequence
authorBenjamin Otte <otte@redhat.com>
Wed, 19 Feb 2020 03:43:03 +0000 (04:43 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 22 Feb 2020 06:33:40 +0000 (07:33 +0100)
This allows treating drop events like touch events, which GTK groups by
event sequence.

It's a bit ugly that we just case the GdkDrop pointer, but event
sequences are only meant to be unique pointer ids, so it's fine.

gdk/gdkevents.c

index e66bbd4fd615e01e49135174280608181197bd31..b316921c3ac88201623a5d23e5173e0d11550c4c 100644 (file)
@@ -1480,13 +1480,23 @@ gdk_event_get_display (GdkEvent *event)
 GdkEventSequence *
 gdk_event_get_event_sequence (GdkEvent *event)
 {
-  if (event->any.type == GDK_TOUCH_BEGIN ||
-      event->any.type == GDK_TOUCH_UPDATE ||
-      event->any.type == GDK_TOUCH_END ||
-      event->any.type == GDK_TOUCH_CANCEL)
-    return event->touch.sequence;
+  switch ((int) event->any.type)
+    {
+    case GDK_TOUCH_BEGIN:
+    case GDK_TOUCH_UPDATE:
+    case GDK_TOUCH_END:
+    case GDK_TOUCH_CANCEL:
+      return event->touch.sequence;
 
-  return NULL;
+    case GDK_DRAG_ENTER:
+    case GDK_DRAG_LEAVE:
+    case GDK_DRAG_MOTION:
+    case GDK_DROP_START:
+      return (GdkEventSequence *) event->dnd.drop;
+
+    default:
+      return NULL;
+    }
 }
 
 /**